﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Globalization;

public partial class DangKy : System.Web.UI.Page
{
    SqlConnection sqlconn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            if (Request.QueryString["value"].ToString() == "0")
            {
                lblTieuDe.Text = "Đăng ký thành viên";
                txtngaysinh.Text = "31/12/1930";
                txttendangnhap.Enabled = true;
                lblmatkhauhientai.Visible = false;
                txtmatkhauhientai.Visible = false;
                btnthem.Text = "Đăng ký";
            }
            else
            {
                lblTieuDe.Text = "Cập nhật thông tin";
                DataTable dt = Session["KhachHang"] as DataTable;
                txtten.Text = dt.Rows[0]["tenkhachhang"].ToString();
                txtngaysinh.Text = DateTime.Parse(dt.Rows[0]["ngaysinh"].ToString()).ToString("dd/MM/yyyy");
                txtsodienthoai.Text = dt.Rows[0]["sodienthoai"].ToString();
                txtemail.Text = dt.Rows[0]["email"].ToString();
                txtdiachi.Text = dt.Rows[0]["diachi"].ToString();
                txttendangnhap.Text = dt.Rows[0]["tendangnhap"].ToString();
                txtmatkhau.Text = mahoa.Decrypt(dt.Rows[0]["matkhau"].ToString(), "_banhang");
                txtnhaplaimatkhau.Text = mahoa.Decrypt(dt.Rows[0]["matkhau"].ToString(), "_banhang");
                txttendangnhap.Enabled = false;
                lblmatkhauhientai.Visible = true;
                txtmatkhauhientai.Visible = true;
                btnthem.Text = "Cập nhật";
            }
        }
    }

    private string TaoMaKhachHang()
    {
        string makh = "KH" + DateTime.Now.ToString("ddMMyy");
        string sqlquery = @"select * from khachhang where MONTH(ngaydangky) = " + DateTime.Now.Month.ToString() + 
                            "and YEAR(ngaydangky) = " + DateTime.Now.Year.ToString();
        SqlDataAdapter da = new SqlDataAdapter(sqlquery, sqlconn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataTable dt = ds.Tables[0];
        makh += string.Format("{0:0000}", dt.Rows.Count + 1);
        return makh;
    }

    private bool KiemTraTenDangNhap()
    {
        string sqlquery = @"select * from khachhang where tendangnhap = N'" + txttendangnhap.Text + "'";
        SqlDataAdapter da = new SqlDataAdapter(sqlquery, sqlconn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataTable dt = ds.Tables[0];
        return (dt.Rows.Count > 0);
    }

    protected void btnthem_Click(object sender, EventArgs e)
    {
        byte value = byte.Parse(Request.QueryString["value"].ToString());
        DataTable dt = Session["KhachHang"] as DataTable;
        DateTime ngaysinh = new DateTime();
        IFormatProvider fm = new CultureInfo("en-US", true);
        if (!DateTime.TryParseExact(txtngaysinh.Text, "dd/MM/yyyy", fm, DateTimeStyles.NoCurrentDateDefault, out ngaysinh))
        {
            MessengeBox.Show(this, "Vui lòng nhập ngày sinh đúng định dạng ngày/tháng/năm");
            return;
        }
        if (value == 0)
        {
            if (KiemTraTenDangNhap() == true)
            {
                MessengeBox.Show(this, "Tên đăng nhập này đã có. Vui lòng chọn tên đăng nhập khác!");
                txttendangnhap.Focus();
                return;
            }
        }
        else
        {
            if (string.IsNullOrEmpty(txtmatkhauhientai.Text) == true)
            {
                MessengeBox.Show(this, "Vui lòng nhập mật khẩu hiện tại để cập nhật lại thông tin!");
                txttendangnhap.Focus();
                return;
            }
            else
            {
                string matkhau = mahoa.Decrypt(dt.Rows[0]["matkhau"].ToString(), "_banhang");
                if (matkhau != txtmatkhauhientai.Text)
                {
                    MessengeBox.Show(this, "Vui lòng kiểm tra lại mật khẩu hiện tại!");
                    return;
                }
            }
        }

        string sqlquery;
        string makh;
        if (value == 0)
        {
            sqlquery = @"insert into khachhang(makh,tenkhachhang,ngaysinh,sodienthoai,email,diachi,tendangnhap,matkhau,ngaydangky)
                            values(@makhachhang,@tenkhachhang,@ngaysinh,@sodienthoai,@email,@diachi,@tendangnhap,@matkhau,@ngaydangky)";
            makh = TaoMaKhachHang();
        }
        else
        {
            sqlquery = @"update khachhang
                         set tenkhachhang = @tenkhachhang,
                             ngaysinh = @ngaysinh,
                             sodienthoai = @sodienthoai,
                             email = @email,
                             diachi = @diachi,
                             tendangnhap = @tendangnhap,
                             matkhau = @matkhau
                             where makh = @makhachhang";
            makh = dt.Rows[0]["makh"].ToString();
        }
        SqlCommand sqlcom = new SqlCommand(sqlquery, sqlconn);
        sqlcom.Parameters.AddWithValue("@makhachhang", makh);
        sqlcom.Parameters.AddWithValue("@tenkhachhang", txtten.Text);
        sqlcom.Parameters.AddWithValue("@ngaysinh", ngaysinh);
        sqlcom.Parameters.AddWithValue("@sodienthoai", txtsodienthoai.Text);
        sqlcom.Parameters.AddWithValue("@email", txtemail.Text);
        sqlcom.Parameters.AddWithValue("@diachi", txtdiachi.Text);
        sqlcom.Parameters.AddWithValue("@tendangnhap", txttendangnhap.Text);
        if (value == 0)
        {
            sqlcom.Parameters.AddWithValue("@matkhau", mahoa.Encrypt(txtmatkhau.Text, "_banhang"));
        }
        else
        {
            if (string.IsNullOrEmpty(txtmatkhau.Text) == true)
            {
                sqlcom.Parameters.AddWithValue("@matkhau", dt.Rows[0]["matkhau"].ToString());
            }
            else
            {
                sqlcom.Parameters.AddWithValue("@matkhau", mahoa.Encrypt(txtmatkhau.Text, "_banhang"));
            }
        }
        sqlcom.Parameters.AddWithValue("@ngaydangky", DateTime.Now);
        try
        {
            sqlconn.Open();
            if (sqlcom.ExecuteNonQuery() > 0)
            {
                //MessengeBox.Show(this, "Thành công!");
                sqlquery = @"select * from khachhang where makh = N'" + makh + "'";
                SqlDataAdapter da = new SqlDataAdapter(sqlquery, sqlconn);
                DataSet ds = new DataSet();
                da.Fill(ds);
                DataTable dtkh = ds.Tables[0];
                Session["KhachHang"] = dtkh;
                if (value == 0)
                {
                    Response.Write("<script>alert('Đăng ký thành viên thành công! Nhấn OK để tiếp tục.')</script>");
                }
                else
                {
                    Response.Write("<script>alert('Cập nhật tài khoản thành công! Nhấn OK để tiếp tục.')</script>");
                }
                Server.Transfer("~/Default.aspx");
            }
            else
            {
                MessengeBox.Show(this, "Không thành công!");
            }
        }
        catch (Exception ex)
        {
            MessengeBox.Show(this, "Lỗi :" + ex.Message);
        }
        finally
        {
            sqlconn.Close();
        }
    }
}